package com.dataexa.ky.jefflow.flowcell;

import org.dom4j.Element;

import java.util.List;

/**
 * @program: jef-flow-spring-boot-starter
 * @description: xml根节点接口
 * @author: Cheng Zhi
 * @create: 2023-02-12 15:42
 **/
public interface JefFlowRoot {

    /**
     * 递归解析xml
     * @param elements
     */
    void readElement(List<Element> elements);

    /**
     * 判断当前节点是否为连线（两个节点之间的联系）
     * @param element
     * @return
     */
    Boolean isEdge(Element element);

    /**
     * 获取开始节点
     * @return
     */
    public JefFlowCell getStartCell();

    /**
     * 获取当前xml中的所有节点元素
     * @return
     */
    public List<JefFlowCell> getCells();

    /**
     * 添加一个节点元素
     * @param jefFlowCell
     */
    public void addCell(JefFlowCell jefFlowCell);

    /**
     * 根据id获取cell
     * @param id
     * @return
     */
    public JefFlowCell getCellById(Integer id);
}
